/*
 * To change SessionMBean template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.core.view.mbean;


import com.brain.core.common.UtilCore;
import com.brain.core.dto.ArchivoDto;
import com.brain.core.dto.OrganizacionDetaDto;
import com.brain.core.dto.OrganizacionDto;
import com.brain.core.dto.UsuarioDto;
import java.io.IOException;

import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import org.apache.log4j.Logger;
import org.primefaces.model.MenuModel;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

/**
 *
 * @author Indra
 */
@Controller("sessionMBean")
@Scope("session")
public class SessionMBean extends GenericMBean implements Serializable{
    private static Logger logger = Logger.getLogger(SessionMBean.class);
    private String titulo;
    private int accion;
    private String tema = "casablanca";
    private String idioma = "es";
    private int cantidadRegistros = 10;
    private Boolean exportarExcel = Boolean.TRUE;
    private Boolean exportarCvs = Boolean.TRUE;
    private Boolean exportarPdf = Boolean.TRUE;
    private String sessionTerminal;
    private String usuarioConectado = "Ronald R. Chang O.";
    private MenuModel menuModel;
    private UsuarioDto sessionUsuarioDto;
    //private Long sessionOrganizacion;
    private String mensajeExpiraSession = "";
    private OrganizacionDto sessionOrganizacionDto;
    private List<OrganizacionDto> organizacionesUsuario;
    
    private List<ArchivoDto> listaArchivos;
    
    private List<OrganizacionDetaDto> siAlmacenes;
    private List<OrganizacionDetaDto> siAlmacenesUnidadesNegocio;
    private List<OrganizacionDetaDto> siSucursales;
    
    
    
    private Map<String, Boolean> privilegiosOpciones = new HashMap<String, Boolean>();
    
    
        
    /*
    public String salir() {        
        String ir = "/index";
        HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);        
        try {
            this.usuarioConectado = null;            
            session.invalidate();
        } catch (Exception e) {
            UtilCore.Log.error(e);
        }
        return ir;
    }*/

    public String inicio () {
        String ir = "/inicio.xhtml";
        
        return ir;
    }
    
    public int getAccion() {
        return accion;
    }

    public void setAccion(int accion) {
        this.accion = accion;
    }

    public int getCantidadRegistros() {
        return cantidadRegistros;
    }

    public void setCantidadRegistros(int cantidadRegistros) {
        this.cantidadRegistros = cantidadRegistros;
    }

    public Boolean getExportarCvs() {
        return exportarCvs;
    }

    public void setExportarCvs(Boolean exportarCvs) {
        this.exportarCvs = exportarCvs;
    }

    public Boolean getExportarExcel() {
        return exportarExcel;
    }

    public void setExportarExcel(Boolean exportarExcel) {
        this.exportarExcel = exportarExcel;
    }

    public Boolean getExportarPdf() {
        return exportarPdf;
    }

    public void setExportarPdf(Boolean exportarPdf) {
        this.exportarPdf = exportarPdf;
    }

    public String getIdioma() {
        return idioma;
    }

    public void setIdioma(String idioma) {
        this.idioma = idioma;
    }

    public MenuModel getMenuModel() {
        return menuModel;
    }

    public void setMenuModel(MenuModel menuModel) {
        this.menuModel = menuModel;
    }

    public OrganizacionDto getSessionOrganizacionDto() {
        return sessionOrganizacionDto;
    }

    public void setSessionOrganizacionDto(OrganizacionDto sessionOrganizacionDto) {
        this.sessionOrganizacionDto = sessionOrganizacionDto;
    }    

    public String getSessionTerminal() {
        return sessionTerminal;
    }

    public void setSessionTerminal(String sessionTerminal) {
        this.sessionTerminal = sessionTerminal;
    }

    public UsuarioDto getSessionUsuarioDto() {
        return sessionUsuarioDto;
    }

    public void setSessionUsuarioDto(UsuarioDto sessionUsuarioDto) {
        this.sessionUsuarioDto = sessionUsuarioDto;
    }

    public String getTema() {
        return tema;
    }

    public void setTema(String tema) {
        this.tema = tema;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public String getUsuarioConectado() {
        return usuarioConectado;
    }

    public void setUsuarioConectado(String usuarioConectado) {
        this.usuarioConectado = usuarioConectado;
    }

    public String getMensajeExpiraSession() {
        return mensajeExpiraSession;
    }

    public void setMensajeExpiraSession(String mensajeExpiraSession) {
        this.mensajeExpiraSession = mensajeExpiraSession;
    }

    public List<OrganizacionDto> getOrganizacionesUsuario() {
        return organizacionesUsuario;
    }

    public void setOrganizacionesUsuario(List<OrganizacionDto> organizacionesUsuario) {
        this.organizacionesUsuario = organizacionesUsuario;
    }

    public void cambiarOrganizacion(javax.faces.event.AjaxBehaviorEvent a) {
        FacesContext fc = FacesContext.getCurrentInstance();
        ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
        String url = extContext.encodeActionURL(fc.getApplication().getViewHandler().getActionURL(fc, "/inicio.xhtml"));
        
      //  System.out.println(this.sessionOrganizacionDto.getDescripcion());
        
        try {
            extContext.redirect(url);
        } catch (IOException e1) {
            logger.error(e1);
        }
    }
    
    public String cambiarOrganizacionUsuario() {
        String to = "/inicio.xhtml";
        String mensajeTrx = UtilCore.Internacionalizacion.getMensajeInternacional("general.cambio.organizacion");
        showMessage(mensajeTrx + " " + this.sessionOrganizacionDto.getDescripcion() + "-" +this.sessionOrganizacionDto.getPaisDto().getDescripcion());
        return to;
    }


    public List<ArchivoDto> getListaArchivos() {
        return listaArchivos;
    }

    public void setListaArchivos(List<ArchivoDto> listaArchivos) {
        this.listaArchivos = listaArchivos;
    }

    public static Logger getLogger() {
        return logger;
    }

    public static void setLogger(Logger logger) {
        SessionMBean.logger = logger;
    }

 

    public Map<String, Boolean> getPrivilegiosOpciones() {
        return privilegiosOpciones;
    }

    public void setPrivilegiosOpciones(Map<String, Boolean> privilegiosOpciones) {
        this.privilegiosOpciones = privilegiosOpciones;
    }

    public List<OrganizacionDetaDto> getSiAlmacenes() {
        return siAlmacenes;
    }

    public void setSiAlmacenes(List<OrganizacionDetaDto> siAlmacenes) {
        this.siAlmacenes = siAlmacenes;
    }

    public List<OrganizacionDetaDto> getSiAlmacenesUnidadesNegocio() {
        return siAlmacenesUnidadesNegocio;
    }

    public void setSiAlmacenesUnidadesNegocio(List<OrganizacionDetaDto> siAlmacenesUnidadesNegocio) {
        this.siAlmacenesUnidadesNegocio = siAlmacenesUnidadesNegocio;
    }

    public List<OrganizacionDetaDto> getSiSucursales() {
        return siSucursales;
    }

    public void setSiSucursales(List<OrganizacionDetaDto> siSucursales) {
        this.siSucursales = siSucursales;
    }

   
    
}
